package cn.iocoder.yudao.module.system.dal.dataobject.equivalentscorerank;

import cn.iocoder.yudao.framework.mybatis.core.dataobject.BaseDO;
import com.baomidou.mybatisplus.annotation.KeySequence;
import com.baomidou.mybatisplus.annotation.TableId;
import com.baomidou.mybatisplus.annotation.TableName;
import lombok.*;
import com.baomidou.mybatisplus.annotation.TableField;

import java.math.BigDecimal;
import java.time.LocalDateTime;
import java.util.List;

/**
 * 等效位次和等效分 DO
 *
 * @author 芋道源码
 */
@TableName("system_equivalent_score_rank")
@KeySequence("system_equivalent_score_rank_seq")
@Data
@EqualsAndHashCode(callSuper = true)
@ToString(callSuper = true)
@Builder
@NoArgsConstructor
@AllArgsConstructor
public class EquivalentScoreRankDO extends BaseDO {

    /**
     * 主键ID
     */
    @TableId
    private Long id;
    
    /**
     * 考试ID
     */
    private Long examId;
    
    /**
     * 学生ID
     */
    private Long studentId;
    
    /**
     * 学号
     */
    private String studentNo;
    
    /**
     * 学生姓名
     */
    private String studentName;
    
    /**
     * 学生原始成绩
     */
    private BigDecimal originalScore;
    
    /**
     * 特控线ID
     */
    private Long controlLineId;
    
    /**
     * 特控线分数
     */
    private BigDecimal controlLineScore;
    
    /**
     * 省份
     */
    private String province;
    
    /**
     * 考试类型（物理类、历史类等）
     */
    private String examType;
    
    /**
     * 等效分数详情列表（一对多关联）
     * 注意：此字段不会持久化到数据库，仅用于业务逻辑中的数据关联
     */
    @TableField(exist = false)
    private List<EquivalentScoreDetailDO> scoreDetails;
    
    /**
     * 学生成绩与特控线的差值
     */
    private BigDecimal scoreDifference;
    
    /**
     * 计算时间
     */
    private LocalDateTime calculationDate;
    
    /**
     * 计算状态：1-成功，0-失败
     */
    private Integer calculationStatus;
    
    /**
     * 错误信息（如果计算失败）
     */
    private String errorMessage;

}